package com.squirrel.michale;


import java.util.LinkedList;

/**
 * @author guanhao 观浩
 * @version 1.0.0.0
 * @createTime 2023/2/10 7:58 PM
 * @company Michale Squirrel
 * @link
 * @description
 */
public class Test2 {

    public static TreeNode creatTree(Integer[] arr) {
        TreeNode root = new TreeNode(arr[0]); // 根节点
        TreeNode current = null;
        Integer value = null;

        // 层序创建二叉树
        LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(root);
        int i = 1;
        while (i < arr.length) {
            current = (TreeNode) queue.poll();// 从链表中移除并获取第一个节点
            value = arr[i++];

            if (value != null) {
                TreeNode left = new TreeNode(value);
                current.setleft(left);// 创建当前节点的左孩子
                queue.offer(left); // 在链表尾部 左孩子入队
            }

            value = arr[i++];

            if (value != null) {
                TreeNode right = new TreeNode(value);
                current.setright(right);// 创建当前节点的右孩子
                queue.offer(right);// 在链表尾部 右孩子入队
            }
        }
        return root;
    }

//    版权声明：本文为CSDN博主「皮皮伟今天有好好写代码吗」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。
//    原文链接：https://blog.csdn.net/weixin_44128101/article/details/125745472
}
